package sort;
import java.util.Arrays;

public class SelectionSort {

    /**
     * 选择排序
     * 每次循环都找出未排序区间的最小值，交换，放入指定位置：
     * 第一次循环，将 0到 n-1 的最小值选出来，放入数组下标为0的位置，0为已排序区间；
     * 第二次循环，将 1到 n-1 的最小值选出来，放入数组下标为1的位置，0-1为已排序区间;
     * ...以此类推
     * 
     * @param arr
     */
    public static void selectionSort(int arr[]) {
        if (arr == null || arr.length < 2) {
            return;
        }
        for (int i = 0; i < arr.length - 1; i++) {
            int minIndex = i;
            for (int j = i + 1; j < arr.length - 1; j++) {
                minIndex = arr[j] < arr[minIndex] ? j : minIndex;
            }
            SwapDataAndCheckSortUtil.swap(arr, i, minIndex);
        }
        System.out.println(Arrays.toString(arr));
    }


    public static void main(String[] args) {
        int[] a = new int[] { 3, 2, 5, 3, 15, 1, 6123, 61, 12231, 7 };
        SwapDataAndCheckSortUtil.comparator(a);
        selectionSort(a);
    }

}
